package sqlGo

//RowRecord 基于Map定义RowRecord类例
type RowRecord map[string]interface{}

//RowRecords 批量记录
type RowRecords []RowRecord

//SQLArgs SQL语句所需的占位符参数
type SQLArgs []interface{}

//SQLString SQL语句
type SQLString string

//SingleRowModel 单记录模型
type SingleRowModel struct {
	SQL  SQLString
	Args SQLArgs
}

//SingleRowModels 单记录模型集合
type SingleRowModels []SingleRowModel

//Size 取记录大小
func (s SingleRowModels) Size() int {
	return len(s)
}

//MultiSQLArgs 参数数组
type MultiSQLArgs []SQLArgs

//MultiRowModel 多记录模型
type MultiRowModel struct {
	SQL  SQLString
	Args MultiSQLArgs
}

//MultiRowModels 多记录模型集合
type MultiRowModels []MultiRowModel

//Size 取记录大小
func (m MultiRowModels) Size() int {
	return len(m)
}

//Size 取记录行数
func (rc RowRecords) Size() int {
	return len(rc)
}

//GetString 根据Key查询对应的值，并返回字符串
func (r RowRecord) GetString(key string, def string) string {
	if value, ok := r[key]; ok {
		return String(value)
	}
	return def

}

//Get 根据Key查询对应的值
func (r RowRecord) Get(key string, def interface{}) interface{} {
	if value, ok := r[key]; ok {
		return value
	}
	return def

}

//Size 返回记录字段数
func (r RowRecord) Size() int {
	return len(r)
}
